package net.sea.commons.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import org.apache.log4j.Logger;

/**
 * 
 * 配置文件的修改工具类
 *
 * @author huachengwu 
 */
public class PropertiesUtils {
	private static Logger logger = Logger.getLogger(PropertiesUtils.class);

	/**
	 * 修改jar包中的配置文件
	 * 
	 * @param jarFile
	 *            jar包的位置
	 * @param cfgFile
	 *            配置文件路径
	 * @param cfgs
	 *            要修改的配置信息
	 * @throws FileNotFoundException
	 *             未找到指定jar包时抛出
	 */
	public static void modifyCfgInJar(String jarFile, String cfgFile,
			Map<String, String> cfgs) throws FileNotFoundException {
		File original = new File(jarFile);
		File parentFile = original.getParentFile();
		List<File> files = FileUtils.findFiles(parentFile, original.getName());
		if (files == null || files.size() == 0) {
			return;
		}
		for (File file : files) {
			JarEditorUtil.write2JarFile(file, cfgFile, cfgs);
		}
	}

	/**
	 * 修改目录下的配置文件
	 * 
	 * @param cfgFile
	 *            配置文件地址
	 * @param cfgs
	 *            要修改的配置信息
	 */
	public static void modifyCfgInDir(String cfgFile, Map<String, String> cfgs) {
		if (cfgs == null || cfgs.isEmpty()) {
			return;
		}
		FileInputStream fis = null;
		FileOutputStream fos = null;
		Properties properties = new Properties();
		try {
			fis = new FileInputStream(new File(cfgFile));
			properties.load(fis);
			Set<String> keySet = cfgs.keySet();
			for (String key : keySet) {
				properties.setProperty(key, cfgs.get(key));
			}
			fos = new FileOutputStream(cfgFile);
			properties.store(fos, "");
		} catch (Exception e) {
			logger.error(e);
		} finally {
			if (fis != null) {
				try {
					fis.close();
				} catch (Exception e) {
					fis = null;
				}
			}
		}
	}
}
